const express = require("express");

const app = express();

/**
 * 定义多个全局中间件
 *
 * 可以使用app.use()连续定义多个全局中间件。
 * 客户端请求到达服务器之后，会按照中间件定义的先后顺序依次进行调用
 */

app.use(function (req, res, next) {
  console.log("This is the 1 middleware");

  next();
});

app.use(function (req, res, next) {
  console.log("This is the 2 middleware");

  next();
});

//局部生效的中间件
//不使用app.use()定义的中间件，叫做局部生效的中间件
//仅处理'/user_query'请求，处理结果交给后面对应的处理函数
const mw = function (req, res, next) {
  console.log("局部中间件");
  next();
};

app.get("/user_query", mw, (req, res) => {
  res.send("局部中间件xxx");
});

//定义多个局部中间件，如下代码使用多个局部中间件
// app.get("/", mw1, mw2, (req, res) => {res.send("Home Page.");});
// app.get("/", [mw1, mw2], (req, res) => {res.send("Home Page.");});

app.get("/user/list", (req, res) => {
  res.send("you cannot get my user data");
});

app.listen(80, () => {
  console.log("express server running at http://localhost:80 ");
});
